package com.kai.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;

import java.security.Key;
import java.util.Date;
import java.util.Map;

public class JwtUtils {


    //private static final String JWT_SECRET = "kai"; // 密钥
    private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 24; // 过期时间 24小时
    private static final Key JWT_SECRET = Keys.secretKeyFor(SignatureAlgorithm.HS256); //密钥

    //创建令牌
    public static String createToken(Map<String,Object> claims){
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,JWT_SECRET) //签名算法
                .addClaims(claims) //载荷内容
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) //令牌过期时间
                .compact(); //创建令牌
    }

    //解析令牌
    public static Claims parseToken(String token){
        return Jwts.parser()  //解析令牌
                .setSigningKey(JWT_SECRET) //密钥
                .parseClaimsJws(token)//解析令牌
                .getBody(); //获取整体内容

//        return Jwts.parserBuilder() //生成解析器
//                .setSigningKey(JWT_SECRET) //密钥
//                .build() //创建解析器
//                .parseClaimsJws(token) //解析令牌
//                .getBody(); //获取整体内容
    }

}
